A print head on a printer (e.g., an ink-jet printer) typically includes a memory circuit located directly on the print head for storing various data. For example, the memory circuit may store data such as the type of ink/toner cartridge being used, the type of printer, the amount of ink/toner used, diagnostic data and the like.
The memory circuit may be an array of memory cells. One such memory array is a floating gate memory array utilizing CMOS EPROM technology. The floating gate memory array is a two-dimensional array of memory cells, wherein each cell may be programmed to store data. An alternative memory array is a fuse memory array.
The memory array may operate as follows. Initially, each data cell is in a native (i.e., unprogrammed) state and therefore corresponds to a digital “0.” The cell is programmed by converting the digital “0” into a digital “1” when a sufficient voltage (e.g., 10 volts) is applied to the cell.
Thus, data may be stored to the memory array by selectively programming cells in the array. In contrast, data may be read from the memory array by applying a second voltage to the cell (e.g., 2.5 volts) and measuring the current generated. The second voltage is not sufficient to write to (i.e., program) the cell. The generated current is compared to a reference current to determine whether a particular cell is programmed or unprogrammed.
The memory array may include at least one memory cell that functions as a reference cell and stores a programmed reference bit. Additionally, the memory array may include at least one memory cell that functions as a data cell and stores a data bit. As described in U.S. patent application Ser. No. 10/961,465, filed on Oct. 8, 2004 (Lexmark disclosure 20004-0644), which is incorporated by reference herein, the at least one programmed reference cell may be used to generate a reference current. Using a current sense amplifier, this reference current may be compared to the current of a data bit in the memory array to determine the state of the data bit. The state of the data bit will be a digital one if the data bit is programmed. Alternatively, the state of the data bit will be a digital zero if the data bit is not programmed.
If the reference bit is over programmed, meaning it has been programmed multiple times, the data bit may be read incorrectly when compared to the reference bit. Accordingly, there is a need for a method of preventing the accidental or intentional over programming of a reference bit in the memory array.